
#ifndef IDrawable_h
#define IDrawable_h

#include <Defines.h>
#include <CSharpPropertyMethods.h>

#include <REvents.h>
#include <System/Generic/EventHandler.h>
#include <System/EventArgs.h>

#include "GameTime.h"

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			interface IDrawable
			{
				public: virtual PROP3_GET(int, DrawOrder) = 0;
				private: PROP3_SET(int, DrawOrder) {throw;};

				public: virtual PROP3_GET(bool, Visible) = 0;
				private: PROP3_SET(bool, Visible) {throw;};
		
				event<Void, Riccsson::System::Generic::EventHandler<Riccsson::System::EventArgs>> DrawOrderChanged;
				event<Void, Riccsson::System::Generic::EventHandler<Riccsson::System::EventArgs>> VisibleChanged;

				virtual void Draw(GameTime gameTime) = 0;
			};
		}
	}
}

#endif

